home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 2010 April / PCWorld0410.iso / hity wydania / Ubuntu 9.10 PL / karmelkowy-koliberek-desktop-9.10-i386-PL.iso / casper / filesystem.squashfs / usr / lib / w3m / xface2xpm < prev   
Text File  |  2009-06-30  |  1KB  |  95 lines

  1. #!/usr/bin/perl
  2.  
  3. $USAGE = "xface2xpm [-t] [-fg <color>] [-bg <color>] [<file>]";
  4.  
  5. # compface/uncompface
  6. #   ftp://metalab.unc.edu/pub/Linux/apps/graphics/convert/
  7. $UNCOMPFACE = "uncompface";
  8.  
  9. $T = "c";
  10. $BG = "white";
  11. $FG = "black";
  12. while (@ARGV) {
  13.     $_ = shift @ARGV;
  14.     if (/^-h/) {
  15.         &usage(0);
  16.     } elsif (/^-t/) {
  17.         $T = "s";
  18.         $BG = "none";
  19.     } elsif (/^-bg/) {
  20.         @ARGV || &usage(1);
  21.         $BG = shift @ARGV;
  22.     } elsif (/^-fg/) {
  23.         @ARGV || &usage(1);
  24.         $FG = shift @ARGV;
  25.     } elsif (/^-./) {
  26.         &usage(1);
  27.     } else {
  28.         unshift(@ARGV, $_);
  29.         last;
  30.     }
  31. }
  32.  
  33. $xf = "";
  34. while(<>) {
  35. #    s/^X-Face://i if ($xf eq "");
  36.     $xf .= $_;
  37. }
  38.  
  39. pipe(R, W2);
  40. pipe(R2, W);
  41. if (! fork()) {
  42.     close(R);
  43.     close(W);
  44.     open(STDIN, "<&R2");
  45.     open(STDOUT, ">&W2");
  46.     exec $UNCOMPFACE;
  47.     exit 1;
  48. }
  49. close(R2);
  50. close(W2);
  51. print W $xf;
  52. close(W);
  53. while(<R>) {
  54.     while(s/0x(..)(..)//) {
  55.         push(@bm, hex($1), hex($2));
  56.     }
  57. }
  58. close(R);
  59. @bm || exit 1;
  60.  
  61. $W = 48;
  62. $H = @bm * 8 / $W;    # must be 48
  63. print <<EOF;
  64. /* XPM */
  65. static char *xf[] = {
  66. /* columns rows colors chars-per-pixel */
  67. "$W $H 2 1",
  68. "  $T $BG",
  69. ". c $FG",
  70. /* pixels */
  71. EOF
  72. while (@bm) {
  73.     print "\"";
  74.     for (1..6) {
  75.         $x = shift @bm;
  76.         for $i (1 .. 8) {
  77.             print ((($x >> (8-$i)) & 1) ? "." : " ");
  78.         }
  79.     }
  80.     print (@bm ? "\",\n" : "\"\n");
  81. }
  82. print <<EOF;
  83. };
  84. EOF
  85.  
  86. sub usage {
  87.     local($err) = @_;
  88.     if ($err) {
  89.         print STDERR "$USAGE\n";
  90.     } else {
  91.         print "$USAGE\n";
  92.     }
  93.     exit $err;
  94. }
  95.